函数
fesetround (C++11)
int fesetround(int rdir);
设置舍入方向模式
设置 rdir 为 当前 浮点环境 的 舍入方向。
这个函数的返回值不一定和 cfloat 中 FLT_ROUNDS 的值相同。
参数
rdir
以下定义为 舍入方向模式 的值之一:
宏值 | 描述 |
---|---|
FE_DOWNWARD | 向下舍入模式 (宏) |
FE_TONEAREST | 四舍五入模式 (宏) |
FE_TOWARDZERO | 朝零舍入模式 (宏) |
FE_UPWARD | 向上舍入模式 (宏) |
特定的库实现可能会支持附加的 浮点舍入方向 值(它们对应的宏同样以 FE_ 开头的宏)。
C99
库可能定义在 <fenv.h>,仅仅支持上面这些宏值(其他可能没有被定义)。
C++11
至少上面所有的宏值都定义在 <fenv.h> 中(即使实现不支持)。
返回值
如果请求的浮点方向被成功设置的话,则返回 0 ,否则返回非 0 。
例子
/* fesetround example */
#include <stdio.h> /* printf */
#include <fenv.h> /* fesetround, FE_* */
#include <math.h> /* rint */
#pragma STDC FENV_ACCESS on
int main()
{
printf("rounding -3.8:\n");
fesetround(FE_DOWNWARD);
printf("FE_DOWNWARD: %.1f\n", rint(-3.8));
fesetround(FE_TONEAREST);
printf("FE_TONEAREST: %.1f\n", rint(-3.8));
fesetround("FE_TOWARDZERO: %.1f\n", rint(-3.8));
printf("FE_TOWARDZERO: %.1f\n", rint(-3.8));
fesetround(FE_UPWARD);
printf("FE_UPWARD: %.1f\n", rint(-3.8));
return 0;
}
可能的输出:
rounding -3.8:
FE_DOWNWARD: -4.0
FE_TONEAREST: -4.0
FE_TOWARDZERO: -3.0
FE_UPWARD: -3.0
数据竞争
同时调用这个函数是安全的,不导致数据竞争。
异常
不抛出异常的保证:这个函数从不抛出异常。
另请参见
函数 | 描述 |
---|---|
fegetround | 获取浮点方向模式 (函数) |
fesetenv | 设置浮点环境 (函数) |
rint | 舍入至整数值 (函数) |
当前内容版权归 chrisniael 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 chrisniael .